/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is the ViewMyCurrency extension.
 *
 * The Initial Developer of the Original Code is
 * Will Moffat.
 * Portions created by the Initial Developer are Copyright (C) 2006
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

//dump("// $Id: WILL_ViewMyCurrencyOverlay.js,v 1.22 2007/02/22 12:46:27 Will Exp $;\n");

// http://kb.mozillazine.org/Setting_up_extension_development_environment

//alert('This main code is executed each time a new Firefox application window is created');
if (!window.document.designMode) { window.document.designMode="off"; } // Firefox assumes this property exists

VMC.hackMode = false; // special hack mode: we do not initalise until keypress. This give time to start venkman
try { 
  VMC.hackMode = Components.classes["@mozilla.org/preferences-service;1"].
                   getService(Components.interfaces.nsIPrefService).
                   getBranch('extensions.').
                   getBoolPref('viewmycurrency_hackMode');
  dump('ViewMyCurrency: hackMode ='+VMC.hackMode+'\n');
 } catch (e) { VMC.hackMode = false;} 




// Global varibales (to this Firefox application window)
//var VMC.gui;

VMC.initViewMyCurrency = function() {
  if (!VMC.hackMode) {
    window.removeEventListener("load", VMC.initViewMyCurrency, false);
  }

  //  alert('VMC.initViewMyCurrency: Called on each new full Firefox application window (after GUI is ready?)\n'+
  //        'But called twice if XUL is loaded as a test window - Why?  Solved by removing the listener');
  
  if (VMC.gui) {   VMC.log('ERR','VMC Gui already exists!'); }

  if (VMC._isStartupWizardRunning()) { return; } // startup wizard is running in another Firefox window, just wait for it to finish. 

  VMC.gui = new VMC.ViewMyCurrencyGui();
  var vmc = new VMC.ViewMyCurrency();
  VMC.gui.registerViewMyCurrency(vmc);
  
  
};

VMC._isStartupWizardRunning = function() {
    var foundWizard = false;
    try {
      var winEnum = Components.classes["@mozilla.org/appshell/window-mediator;1"].
	getService(Components.interfaces.nsIWindowMediator).
	getEnumerator(null);
      while (winEnum.hasMoreElements()){
	var win = winEnum.getNext();
	if (win.VMC) {
	  if (win.VMC.startupManager) { //WILL: TODO: why didn't this work? 	if (win.VNC && win.VMC.startupManager) { 
	    foundWizard = true;
	    VMC.log('INFO','ViewMyCurrency: startup wizard already running\n');
	    continue;
	  }
	}
      }
    } catch(e) { dump('ViewMyCurrency: Got unexpected '+e+'\n'); }
    return foundWizard;
};

VMC.window_onUnLoad = function() {
  //alert('window-unload: Called when closing each full Firefox application window\n'+
  // 'Or on leaving (or reloading) test window xul');
  if (VMC.gui) {  // vmc may never have initalised if StartupWizard was still running
    VMC.gui.die();
  }

};


// normal mode. Initialise on application startup
if (!VMC.hackMode) {
  window.addEventListener("load", VMC.initViewMyCurrency, false);
 }
window.addEventListener("unload", VMC.window_onUnLoad, false);

